package main

import "fmt"

func main() {
	//如果将上例中的代码，去掉函数，直接写在这里,会报错
	//原因在于当一个函数接受 interface{} 空接口类型时，Go会把传入函数的参数值。类型隐式的转换成 interface{} 类型

	i := 10
	switch x := i.(type) { //报错，因为只能对interface{}类型进行断言。其实可以理解为，i已经是很明确的整型了，当然就不需要断言它的类型了！
	case int:
		fmt.Println(x, "is int")
	case string:
		fmt.Println(x, "is string")
	case nil:
		fmt.Println(x, "is nil")
	default:
		fmt.Println(x, "is someting else")
	}
	fmt.Println()
}
